package com.hyts.keygen.config;

/**
 * @project-name:coffice-toolbox
 * @package-name:com.hyts.keygen.config
 * @author:Libo/Alex
 * @create-date:2019-05-25 00:54
 * @copyright:libo-hyts-github
 * @email:libo2dev@aliyun.com
 * @description:此类主要用于: work任务角色的properties属性配置对象
 */
public interface KeyWorkProperties {


    /**默认的work生成器的ID字节位数 2-n */
    long DEFAULT_WORK_ID_BITS = 5L;

    /**默认的datacenter数据中心的生成器ID字节数*/
    long DEFAULT_DATA_CENTER_ID_BITS = 5L;

    /**默认序列号数值位数 - 12位长度数字*/
    long DEFAULT_SEQENCE_BITS = 12L;

    /**计算最大的workId可以到达的数值*/
    long DEFAULT_MAX_WORK_ID = -1L ^ (-1L << DEFAULT_WORK_ID_BITS);

    /**计算最大的dataCenter可以到达的数值*/
    long DEFAULT_MAX_DATA_CENTER_ID = -1L ^ (-1L << DEFAULT_DATA_CENTER_ID_BITS);

    /**序号编码掩码*/
    long DEFAULT_SEQUENCE_MASK = -1L ^ (-1L << DEFAULT_SEQENCE_BITS);

    /**shiit转换序号数值-暂时不知什么用途和角色位置*/
    long DEFAULT_WORK_ID_SHIFT = DEFAULT_SEQENCE_BITS;

    long DEFAULT_DATA_CENTER_SHIFT = DEFAULT_SEQENCE_BITS + DEFAULT_WORK_ID_BITS;

    long TIME_SAMPLE_ID_SHIFT = DEFAULT_SEQENCE_BITS + DEFAULT_WORK_ID_BITS + DEFAULT_DATA_CENTER_ID_BITS;

    /**时间戳*/
    long DEAULT_LAST_TIME_STAMP = -1L;

    /**偏移量时间戳*/
    long DEFAULT_TIME_EPOCH_OFFSET = 1288834974657L;
}
